package cn.group7.padserver.service.impl;

import cn.group7.padserver.dao.FinanceDao;
import cn.group7.padserver.entity.Page;
import cn.group7.padserver.entity.Recommender;
import cn.group7.padserver.pojo.BankUser;
import cn.group7.padserver.pojo.Finance;
import cn.group7.padserver.pojo.Knowledge;
import cn.group7.padserver.service.FinanceService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.*;

/**
 * @author 谷汉斌
 * @description 融资信息服务实现类
 * @createTime 2024/7/31 上午9:25
 */
@Service
public class FinanceServiceImpl implements FinanceService {
    @Autowired
    private FinanceDao financeDao;

    /**
     * @param finance 融资信息
     * @return 添加结果
     * @description 添加融资
     * @createTime 2024/7/31 上午9:24
     */
    @Override
    public boolean add(Finance finance) {
        //随机生成状态
        Random random = new Random();
        int status = random.nextInt(3);
        finance.setStatus(status);
        finance.setCreateTime(new Date());
        finance.setUpdateTime(new Date());
        return financeDao.insertSelective(finance) == 1;
    }

    /**
     * @param finance 融资信息
     * @return 添加结果
     * @description 添加组合融资
     * @createTime 2024/7/31 上午9:24
     */
    @Override
    public boolean addMulti(Finance finance) {
        finance.setCreateTime(new Date());
        finance.setUpdateTime(new Date());
        finance.setStatus(0);
//        System.out.println("添加融资情报2:"+finance.toString());
        return financeDao.insertMulti(finance) == 1;
    }

    /**
     * @param finance 融资信息
     * @return 融资信息列表
     * @description 根据融资信息查询其他融资信息
     * @createTime 2024/7/31 上午9:24
     */
    @Override
    public List<Finance> selectByFinance(Finance finance) {
        return financeDao.selectByFinance(finance);
    }

    /**
     * @param id 融资id
     * @return 融资信息
     * @description 根据融资id查询融资信息
     * @createTime 2024/7/31 上午9:24
     */
    @Override
    public Finance selectByFinanceId(Integer id) {
        return financeDao.selectByPrimaryKey(id);
    }

    /**
     * @param id 融资id
     * @return 删除结果
     * @description 根据融资id删除融资信息
     * @createTime 2024/7/31 上午9:24
     */
    @Override
    public boolean deleteByFinanceId(Integer id) {
        return financeDao.deleteByPrimaryKey(id) == 1;
    }

    /**
     * @param finance 融资信息
     * @return 添加结果
     * @description 根据融资信息更新融资信息
     * @createTime 2024/7/31 上午9:24
     */
    @Override
    public boolean updateByFinance(Finance finance) {
        return financeDao.updateByPrimaryKeySelective(finance) == 1;
    }

    /**
     * 分页查询推荐融资人
     *
     * @param pageNum  页码
     * @param pageSize 每页数量
     * @return 分页结果
     */
    @Override
    public Page<BankUser> selectRecommend(Integer pageNum, Integer pageSize) {
        // 页码小于等于1，则默认为1
        if (pageNum <= 1) {
            pageNum = 1;
        }
        //开始页码-1*每页显示的条数
        int start = (pageNum - 1) * pageSize;
        Map<String, Object> map = new HashMap<>(1);
        map.put("start", start);
        map.put("pageSize", pageSize);
        Page<BankUser> page = new Page<>();
        page.setData(financeDao.queryFinanceByPage(map));
        page.setPageNum(pageNum);
        page.setTotal(financeDao.selectTotal(map));
        page.setPageSize(pageSize);
        return page;
    }
}
